/*
 * Copyright (c) 2020, salesforce.com, inc.
 * All rights reserved.
 * Licensed under the BSD 3-Clause license.
 * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause
 */

import { SObject } from '../../../src/types';

// This is our internal minimal fields version (type SObject) of the same set of sobjects:
export const minimalCustomSObject: SObject = {
  childRelationships: [
    {
      cascadeDelete: true,
      childSObject: 'ActivityHistory',
      deprecatedAndHidden: false,
      field: 'WhatId',
      junctionIdListNames: [],
      junctionReferenceTo: [],
      relationshipName: 'ActivityHistories',
      restrictedDelete: false
    },
    {
      cascadeDelete: true,
      childSObject: 'Test_Object__History',
      deprecatedAndHidden: false,
      field: 'ParentId',
      junctionIdListNames: [],
      junctionReferenceTo: [],
      relationshipName: 'Histories',
      restrictedDelete: false
    }
  ],
  custom: true,
  fields: [
    {
      aggregatable: true,
      custom: false,
      defaultValue: null,
      extraTypeInfo: null,
      filterable: true,
      groupable: true,
      inlineHelpText: null,
      label: 'Record ID',
      name: 'Id',
      nillable: false,
      picklistValues: [],
      referenceTo: [],
      relationshipName: '',
      sortable: true,
      type: 'id'
    },
    {
      aggregatable: true,
      custom: false,
      defaultValue: null,
      extraTypeInfo: null,
      filterable: true,
      groupable: true,
      inlineHelpText: null,
      label: 'Owner ID',
      name: 'OwnerId',
      nillable: false,
      picklistValues: [],
      referenceTo: ['Group', 'User'],
      relationshipName: 'Owner',
      sortable: true,
      type: 'reference'
    },
    {
      aggregatable: false,
      custom: false,
      defaultValue: null,
      extraTypeInfo: null,
      filterable: true,
      groupable: true,
      inlineHelpText: null,
      label: 'Deleted',
      name: 'IsDeleted',
      nillable: false,
      picklistValues: [],
      referenceTo: [],
      relationshipName: '',
      sortable: true,
      type: 'boolean'
    },
    {
      aggregatable: true,
      custom: false,
      defaultValue: null,
      extraTypeInfo: null,
      filterable: true,
      groupable: false,
      inlineHelpText: 'Please add a unique name',
      label: 'Test Object Name',
      name: 'Name',
      nillable: false,
      picklistValues: [],
      referenceTo: [],
      relationshipName: '',
      sortable: true,
      type: 'string'
    },
    {
      aggregatable: true,
      custom: false,
      defaultValue: null,
      extraTypeInfo: null,
      filterable: true,
      groupable: false,
      inlineHelpText: null,
      label: 'Created Date',
      name: 'CreatedDate',
      nillable: false,
      picklistValues: [],
      referenceTo: [],
      relationshipName: '',
      sortable: true,
      type: 'datetime'
    },
    {
      aggregatable: true,
      custom: false,
      defaultValue: null,
      extraTypeInfo: null,
      filterable: true,
      groupable: true,
      inlineHelpText: null,
      label: 'Created By ID',
      name: 'CreatedById',
      nillable: false,
      picklistValues: [],
      referenceTo: ['User'],
      relationshipName: 'CreatedBy',
      sortable: true,
      type: 'reference'
    },
    {
      aggregatable: true,
      custom: false,
      defaultValue: null,
      extraTypeInfo: null,
      filterable: true,
      groupable: false,
      inlineHelpText: null,
      label: 'Last Modified Date',
      name: 'LastModifiedDate',
      nillable: false,
      picklistValues: [],
      referenceTo: [],
      relationshipName: '',
      sortable: true,
      type: 'datetime'
    },
    {
      aggregatable: true,
      custom: false,
      defaultValue: null,
      extraTypeInfo: null,
      filterable: true,
      groupable: true,
      inlineHelpText: null,
      label: 'Last Modified By ID',
      name: 'LastModifiedById',
      nillable: false,
      picklistValues: [],
      referenceTo: ['User'],
      relationshipName: 'LastModifiedBy',
      sortable: true,
      type: 'reference'
    },
    {
      aggregatable: true,
      custom: false,
      defaultValue: null,
      extraTypeInfo: null,
      filterable: true,
      groupable: false,
      inlineHelpText: null,
      label: 'System Modstamp',
      name: 'SystemModstamp',
      nillable: false,
      picklistValues: [],
      referenceTo: [],
      relationshipName: '',
      sortable: true,
      type: 'datetime'
    },
    {
      aggregatable: true,
      custom: false,
      defaultValue: null,
      extraTypeInfo: null,
      filterable: true,
      groupable: true,
      inlineHelpText: null,
      label: 'Last Activity Date',
      name: 'LastActivityDate',
      nillable: true,
      picklistValues: [],
      referenceTo: [],
      relationshipName: '',
      sortable: true,
      type: 'date'
    },
    {
      aggregatable: true,
      custom: false,
      defaultValue: null,
      extraTypeInfo: null,
      filterable: true,
      groupable: false,
      inlineHelpText: null,
      label: 'Last Viewed Date',
      name: 'LastViewedDate',
      nillable: true,
      picklistValues: [],
      referenceTo: [],
      relationshipName: '',
      sortable: true,
      type: 'datetime'
    },
    {
      aggregatable: true,
      custom: false,
      defaultValue: null,
      extraTypeInfo: null,
      filterable: true,
      groupable: false,
      inlineHelpText: null,
      label: 'Last Referenced Date',
      name: 'LastReferencedDate',
      nillable: true,
      picklistValues: [],
      referenceTo: [],
      relationshipName: '',
      sortable: true,
      type: 'datetime'
    },
    {
      aggregatable: true,
      custom: true,
      defaultValue: null,
      extraTypeInfo: null,
      filterable: true,
      groupable: true,
      inlineHelpText: 'User field API name',
      label: 'Field API Name',
      name: 'Field_API_Name__c',
      nillable: false,
      picklistValues: [],
      referenceTo: [],
      relationshipName: '',
      sortable: true,
      type: 'string'
    },
    {
      aggregatable: true,
      custom: true,
      defaultValue: null,
      extraTypeInfo: null,
      filterable: true,
      groupable: true,
      inlineHelpText: 'User field expected value. If using a regex you can test it ...',
      label: 'Field Value',
      name: 'Field_Value__c',
      nillable: false,
      picklistValues: [],
      referenceTo: [],
      relationshipName: '',
      sortable: true,
      type: 'string'
    },
    {
      aggregatable: true,
      custom: true,
      defaultValue: null,
      extraTypeInfo: null,
      filterable: true,
      groupable: true,
      inlineHelpText: 'Unique id for this rule.',
      label: 'Rule ID',
      name: 'RuleID__c',
      nillable: false,
      picklistValues: [],
      referenceTo: [],
      relationshipName: '',
      sortable: true,
      type: 'string'
    }
  ],
  label: 'Test Object',
  name: 'Test_Object__c',
  queryable: true
};
